library IEEE ;
use IEEE.STD_LOGIC_1164.ALL ;
use IEEE.STD_LOGIC_ARITH.ALL ;
use IEEE.STD_LOGIC_UNSIGNED.ALL ;

entity cntreg7 is
    Port (   CCnt : in std_logic ;
          CReg : in std_logic ;
          R : in std_logic ;
          Q : out std_logic_vector ( 6 downto 0 ) ;
          EndVal : out std_logic ) ;
end cntreg7 ;

architecture Behavioral of cntreg7 is

signal Cnt : std_logic_vector ( 6 downto 0 ) := "0000000" ;
signal Reg : std_logic_vector ( 6 downto 0 ) := "0000000" ;

begin

    count: process( CCnt )
    begin
        if ( CCnt'event and CCnt = '1' ) then
            if ( R = '1' ) then
                Cnt <= "0000001" ;
            else
                if ( Cnt = "1111111" ) then
                    Cnt <= Cnt ;
                else
                    Cnt <= Cnt + 1 ;
                end if ;
            end if ;
        end if ;
    end process count ;

    store: process( CReg )
    begin
        if ( CReg'event and CReg = '1' ) then
            Reg <= Cnt ;
        end if ;
    end process store ;

    Q <= Reg ;
    EndVal <= '1' when Cnt="1111111" else '0' ;

end Behavioral ;



HTML Source generated with the hdl2html perl script from Millogic